#ifndef __SCENE_BASE_IMP___
#define __SCENE_BASE_IMP___


#include "SceneIf.h"

class TCOM_API  SceneB : public IScene
{
public:
	//
	//	callback to load scene datas
	//
	virtual bool	onLoad();


	//	
	//	ID
	//	This is an instance id generate when scene id add into scene manager
	//
	//
	virtual void	setID(int nID);
	virtual int		getID()const;

	//
	//	Global ID
	//	Session ID
	//
	virtual void	setGlobalID(int nID);
	virtual int		getGlobalID()const;

	//
	//	scene static ids
	//
	virtual void	setStaticID(int val);
	virtual int		getStaticID()const;

	//	
	//	Static ID
	//	ID for static data
	//
	virtual void	setLevel(int v);
	virtual int		getLevel()const;

	//
	//		Scene Global State
	//
	virtual void	setGState(const short& st);
	virtual short	getGState()const;


	//
	//		Scene Combat State
	//
	virtual void	setCombatState(const short& st);
	virtual short	getCombatState()const;

	//
	//		Scene Extension Properties
	//
	virtual	int		getProps(const short& nIdx)const;
	virtual void	setProps(const short& nIdx, int v);

	//
	//		Scene Flags
	//
	virtual void	setFlg(const short& nIdx);
	virtual	void	clrFlg(const short& nIdx);
	virtual bool	hasFlg(const short& nIdx);


	//
	//		Static Scene Data
	//
	virtual	IDataEx*	getStaticSceneData();
	virtual void		setStaticSceneData(IDataEx* pSED);

	//
	//	visit all entities in current manager
	//
	virtual void	forEach(IEntityVisitor& v);
protected:
	int m_nStaticID;
	int	m_nID;

	typedef std::map<short, int>	PropsMap;
	PropsMap	m_theProps;
};


#endif
